
package Presentacion;
import Dominio.*;
import Datos.*;
//import Dominio.CtrlPartidaRemigio;
//import Dominio.PartidaRemigio;
/**
 *
 * @author Victor Varias Perez
 * Cluster y grupo: C8G3
 * Creado el 16-may-2010 13:19:03
 *
 * Objetivo de la clase: Capa de presentación
 * Clases utilizadas: Carta, Mazo, Jugador
 */
public class GUIRemigio extends gui {

    /**
     * Atributo que marca el fin del registro
     */
    boolean finreg;
    /**
     * Atributo que nos dice si ha teminado el turno del jugador, y por lo tanto 
     * podemos cerrar su pantalla de juego
     */
    boolean haterminado;
    public GUIJugador j;
    int Contador;
    int NUsers;
    CtrlPartidaRemigio ctrlpart;
    PartidaRemigio partida;

    /** Creates new form GUIRemigio */
    public GUIRemigio() {
        initComponents();
        //this.initComponents();
        getRootPane().setContentPane(IntroGui);
        ReglasGui.setVisible(false);
        EsperaGui.setVisible(false);
        LoadingGui.setVisible(false);
        GanadorGui.setVisible(false);
        LabelAyuda.setText("Consultar el manual de usuario");
    }

    @Override
    protected void aceptarJugadoresActionPerformed(java.awt.event.ActionEvent evt) {
         // TODO add your handling code here:
        SelJugGui.setVisible(false);
        ReglasGui.setVisible(true);
        super.getRootPane().setContentPane(ReglasGui);
        err1.setVisible(false);
        err2.setVisible(false);
        err3.setVisible(false);
        err4.setVisible(false);
        /*
         *Tenemos que mirar la cantidad de jugadores que se ha escojido, inicializarlos
         * y para cada uno que sea humano lanzar la pantalla de LoginGui, para
         * las maquinas inicializarlas con el nivel indicado, y entonces iniciar
         * una partida con todos esos datos
         */
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        EsperaGui = new javax.swing.JPanel();
        jLabel10 = new javax.swing.JLabel();
        ReglasGui = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        text = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        RComodin = new javax.swing.JCheckBox();
        RParejas = new javax.swing.JCheckBox();
        RTiempoJuego = new javax.swing.JTextField();
        RTiempoTurno = new javax.swing.JTextField();
        RNJuegos = new javax.swing.JTextField();
        RNPuntos = new javax.swing.JTextField();
        RTipo = new javax.swing.JCheckBox();
        REliminacion = new javax.swing.JCheckBox();
        jLabel9 = new javax.swing.JLabel();
        AceptarReglas = new javax.swing.JButton();
        err1 = new javax.swing.JLabel();
        err2 = new javax.swing.JLabel();
        err3 = new javax.swing.JLabel();
        err4 = new javax.swing.JLabel();
        LoadingGui = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        jProgressBar1 = new javax.swing.JProgressBar();
        Pulsa = new javax.swing.JButton();
        GanadorGui = new javax.swing.JPanel();
        jLabel11 = new javax.swing.JLabel();
        NombreGanador = new javax.swing.JLabel();
        fin = new javax.swing.JButton();

        setTitle("Remigio - PROP");

        EsperaGui.setName("Remigio"); // NOI18N

        jLabel10.setFont(new java.awt.Font("Tahoma", 0, 36));
        jLabel10.setText("Espera por favor");

        javax.swing.GroupLayout EsperaGuiLayout = new javax.swing.GroupLayout(EsperaGui);
        EsperaGui.setLayout(EsperaGuiLayout);
        EsperaGuiLayout.setHorizontalGroup(
            EsperaGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EsperaGuiLayout.createSequentialGroup()
                .addGap(197, 197, 197)
                .addComponent(jLabel10)
                .addContainerGap(462, Short.MAX_VALUE))
        );
        EsperaGuiLayout.setVerticalGroup(
            EsperaGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(EsperaGuiLayout.createSequentialGroup()
                .addGap(175, 175, 175)
                .addComponent(jLabel10)
                .addContainerGap(341, Short.MAX_VALUE))
        );

        ReglasGui.setPreferredSize(new java.awt.Dimension(643, 441));

        jLabel1.setFont(new java.awt.Font("Tahoma", 0, 16));
        jLabel1.setText("Escoje las reglas para esta partida");

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel2.setText("Permite el uso de comodines");

        jLabel3.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel3.setText("Se permite ganar con 5 parejas");

        jLabel4.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel4.setText("Tiempo total de juego (0=infinito) (todavia no implementado)");

        jLabel5.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel5.setText("Tiempo máximo por turno (0=infinito) (todavia no implementado)");

        jLabel6.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel6.setText("Número máximo de juegos (0=infinito)");

        text.setFont(new java.awt.Font("Tahoma", 0, 12));
        text.setText("Límite de puntos (0=infinito)");

        jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel8.setText("El ganador anota los puntos de sus adversarios además de los suyos (todavia no implementado)");

        RTiempoJuego.setText("0");

        RTiempoTurno.setText("0");

        RNJuegos.setText("1");

        RNPuntos.setText("0");

        jLabel9.setFont(new java.awt.Font("Tahoma", 0, 12));
        jLabel9.setText("Cuando se llega al limite de Puntos se elimina al jugador (todavia no implementado)");

        AceptarReglas.setText("Aceptar");
        AceptarReglas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AceptarReglasActionPerformed(evt);
            }
        });

        err1.setText("Solo numeros!");

        err2.setText("Solo numeros!");

        err3.setText("Solo numeros!");

        err4.setText("Solo numeros!");

        javax.swing.GroupLayout ReglasGuiLayout = new javax.swing.GroupLayout(ReglasGui);
        ReglasGui.setLayout(ReglasGuiLayout);
        ReglasGuiLayout.setHorizontalGroup(
            ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ReglasGuiLayout.createSequentialGroup()
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(ReglasGuiLayout.createSequentialGroup()
                        .addGap(168, 168, 168)
                        .addComponent(jLabel1))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ReglasGuiLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(RTipo, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(REliminacion, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RNPuntos, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE)
                            .addComponent(RParejas, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RComodin, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RTiempoJuego, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(RTiempoTurno, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE)
                            .addComponent(RNJuegos, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 59, Short.MAX_VALUE))
                        .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(ReglasGuiLayout.createSequentialGroup()
                                .addGap(18, 18, 18)
                                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(ReglasGuiLayout.createSequentialGroup()
                                        .addComponent(jLabel6)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(err3))
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ReglasGuiLayout.createSequentialGroup()
                                        .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addGroup(ReglasGuiLayout.createSequentialGroup()
                                                .addComponent(jLabel5)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(err2))
                                            .addGroup(ReglasGuiLayout.createSequentialGroup()
                                                .addComponent(jLabel4)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                .addComponent(err1))
                                            .addComponent(jLabel3)
                                            .addComponent(jLabel2))
                                        .addGap(115, 115, 115))
                                    .addGroup(ReglasGuiLayout.createSequentialGroup()
                                        .addComponent(text)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(err4))))
                            .addComponent(jLabel8)
                            .addComponent(jLabel9))))
                .addGap(314, 314, 314))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, ReglasGuiLayout.createSequentialGroup()
                .addContainerGap(589, Short.MAX_VALUE)
                .addComponent(AceptarReglas)
                .addGap(262, 262, 262))
        );
        ReglasGuiLayout.setVerticalGroup(
            ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(ReglasGuiLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(ReglasGuiLayout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(23, 23, 23)
                        .addComponent(jLabel2))
                    .addComponent(RComodin))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(RParejas)
                    .addComponent(jLabel3))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RTiempoJuego, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel4)
                    .addComponent(err1))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RTiempoTurno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(err2))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RNJuegos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel6)
                    .addComponent(err3))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(RNPuntos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(text)
                    .addComponent(err4))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(RTipo)
                    .addComponent(jLabel8))
                .addGap(18, 18, 18)
                .addGroup(ReglasGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(REliminacion)
                    .addComponent(jLabel9))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 69, Short.MAX_VALUE)
                .addComponent(AceptarReglas)
                .addContainerGap())
        );

        jLabel7.setFont(new java.awt.Font("Tahoma", 0, 24));
        jLabel7.setText("Cargando");

        Pulsa.setText("Pulsa para continuar");
        Pulsa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PulsaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout LoadingGuiLayout = new javax.swing.GroupLayout(LoadingGui);
        LoadingGui.setLayout(LoadingGuiLayout);
        LoadingGuiLayout.setHorizontalGroup(
            LoadingGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(LoadingGuiLayout.createSequentialGroup()
                .addGroup(LoadingGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(LoadingGuiLayout.createSequentialGroup()
                        .addGap(295, 295, 295)
                        .addComponent(jLabel7))
                    .addGroup(LoadingGuiLayout.createSequentialGroup()
                        .addGap(275, 275, 275)
                        .addGroup(LoadingGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(Pulsa)
                            .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(501, Short.MAX_VALUE))
        );
        LoadingGuiLayout.setVerticalGroup(
            LoadingGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(LoadingGuiLayout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addComponent(jLabel7)
                .addGap(63, 63, 63)
                .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(104, 104, 104)
                .addComponent(Pulsa)
                .addContainerGap(300, Short.MAX_VALUE))
        );

        jLabel11.setFont(new java.awt.Font("Tahoma", 0, 36));
        jLabel11.setText("Turno del Jugador:");

        NombreGanador.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
        NombreGanador.setText("NombreGanador");

        fin.setText("Aceptar");
        fin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                finActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout GanadorGuiLayout = new javax.swing.GroupLayout(GanadorGui);
        GanadorGui.setLayout(GanadorGuiLayout);
        GanadorGuiLayout.setHorizontalGroup(
            GanadorGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(GanadorGuiLayout.createSequentialGroup()
                .addGroup(GanadorGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(GanadorGuiLayout.createSequentialGroup()
                        .addGap(101, 101, 101)
                        .addGroup(GanadorGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(NombreGanador)
                            .addComponent(jLabel11)))
                    .addGroup(GanadorGuiLayout.createSequentialGroup()
                        .addGap(206, 206, 206)
                        .addComponent(fin)))
                .addContainerGap(348, Short.MAX_VALUE))
        );
        GanadorGuiLayout.setVerticalGroup(
            GanadorGuiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(GanadorGuiLayout.createSequentialGroup()
                .addGap(75, 75, 75)
                .addComponent(jLabel11)
                .addGap(18, 18, 18)
                .addComponent(NombreGanador)
                .addGap(18, 18, 18)
                .addComponent(fin)
                .addContainerGap(312, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(ReglasGui, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(EsperaGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(LoadingGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(GanadorGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGap(190, 190, 190)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(126, 126, 126)
                .addComponent(ReglasGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(EsperaGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(LoadingGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap()))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addComponent(GanadorGui, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGap(48, 48, 48)))
        );
    }// </editor-fold>//GEN-END:initComponents

    @Override
    protected void registrarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        LoginGui.setVisible(false);
        RegistrarGui.setVisible(true);
        getRootPane().setContentPane(RegistrarGui);
        nextpanereg = LoginGui;
        previouspanereg = LoginGui;
        existente.setVisible(false);

    }

    private void finActionPerformed(java.awt.event.ActionEvent evt) {
        IntroGui.setVisible(true);
        GanadorGui.setVisible(false);
        this.getRootPane().setContentPane(IntroGui);
    }

    private void AceptarReglasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AceptarReglasActionPerformed
        // TODO add your handling code here:
        err1.setVisible(false);
        err2.setVisible(false);
        err3.setVisible(false);
        err4.setVisible(false);
        /**
         * nos indica si ha habido algun error
         */
        boolean ok = true;
        double barajaxjugador=3;
        int juegos = 0;
        
        int tj=0;int tt=0;int lp=0;
        //comprovamos los campos
        try {
            juegos = Integer.parseInt(RNJuegos.getText().trim());
            if (Integer.parseInt(RNJuegos.getText().trim())<0){
                ok = false;
                err3.setVisible(true);
            }
            else{
                if (juegos == 0){
                    juegos = 500;
                }
            }
        }
        catch (Exception e){
            ok = false;
            err3.setVisible(true);
        }
        try {
            tj = Integer.parseInt(RTiempoJuego.getText().trim());
            if (Integer.parseInt(RTiempoJuego.getText().trim())<0){
                ok = false;
                err1.setVisible(true);
            }
        }
        catch (Exception e){
            ok = false;
            err1.setVisible(true);
        }
        try {
            tt = Integer.parseInt(RTiempoTurno.getText().trim());
            if (Integer.parseInt(RTiempoTurno.getText().trim())<0){
                ok = false;
                err2.setVisible(true);
            }
        }
        catch (Exception e){
            ok = false;
            err2.setVisible(true);
        }
        try {
            lp = Integer.parseInt(RNPuntos.getText().trim());
            if (Integer.parseInt(RNPuntos.getText().trim())<0){
                ok = false;
                err4.setVisible(true);
            }
        }
        catch (Exception e){
            ok = false;
            err4.setVisible(true);
        }
        if (ok){
            Reglas r = new Reglas(RComodin.isSelected(), barajaxjugador, RTipo.isSelected(),
                RParejas.isSelected(), tj, tt, juegos, lp, REliminacion.isSelected());
            //public void InicializarPartida (int num_jugadors, Reglas reg, GUIRemigio gui){
            NUsers = NJug.getSelectedIndex(); NUsers += 2;
            ctrlpart = new CtrlPartidaRemigio();
            ctrlpart.InicializarPartida(NUsers, r, this);
            partida = ctrlpart.GetPartidaRemigio();
            Contador = 1;
            nextpane=LoadingGui;
            previouspane = SelJugGui;
            finreg=false;
            Init();
        }
    }//GEN-LAST:event_AceptarReglasActionPerformed

    private void PulsaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PulsaActionPerformed
        // TODO add your handling code here:
        finreg = true;
        Init();
    }//GEN-LAST:event_PulsaActionPerformed

//GEN-FIRST:event_MostrarActionPerformed

//GEN-LAST:event_MostrarActionPerformed

    public void Init (){
        nextpanereg = LoginGui;
        if (Contador==1){//añadimos al primer jugador
            String st = (String)jug11.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 0);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 1");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 0);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug12.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 0);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 0);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 0);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==2){//añadimos al segundo jugador
            String st = (String)jug21.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 1);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 2");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 1);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug22.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 1);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 1);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 1);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==3 && Contador <= NUsers){//añadimos al tercer jugador
            String st = (String)jug31.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 2);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 3");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 2);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug32.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 2);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 2);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 2);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==4 && Contador <= NUsers){//añadimos al cuarto jugador
            String st = (String)jug41.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 3);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 4");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 3);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug42.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 3);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 3);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 3);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==5 && Contador <= NUsers){//añadimos al quinto jugador
            String st = (String)jug51.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 4);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 5");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 4);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug52.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 4);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 4);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 4);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==6 && Contador <= NUsers){//añadimos al sexto jugador
            String st = (String)jug61.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 5);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 6");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 5);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug62.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 5);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 5);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 5);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if (Contador==7 && Contador <= NUsers){//añadimos al septimo jugador
            String st = (String)jug71.getSelectedItem();
            if (st.equals("Humano")){
                if (finreg){//El usuario ha hecho login
                    JugadorRemigio j1 = new JugadorRemigio(usuarioactual, null);
                    try {
                        partida.AddJugador(j1, 6);
                    }
                    catch (Exception e){
                        //Hay un error
                    }
                    Contador ++;
                    finreg=false;
                }
                else {
                    ReglasGui.setVisible(false);
                    LoginGui.setVisible(true);
                    super.getRootPane().setContentPane(LoginGui);
                    nextpane = LoadingGui;
                    incorrecto.setVisible(false);
                    user.setText("");
                    pass.setText("");
                }
            }
            else if (st.equals("Invitado")){
                Usuario guest = new InvitadoRemigio("Invitado 7");
                JugadorRemigio j1 = new JugadorRemigio(guest, null);
                try {
                    partida.AddJugador(j1, 6);
                }
                catch (Exception e){
                    //Hay un error
                }
                Contador++;
            }
            else {
                Usuario maq = new Maquina();
                String st2 = (String)jug72.getSelectedItem();
                GestorEstrategias e = new GestorEstrategias();
                if (st2.equals("Facil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("random.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 6);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Medio")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("medio.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 6);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
                else if (st2.equals("Dificil")){
                    try {
                        IERemigio ier = new IERemigio(e.estrategia("dificil.ie"));
                        Maquina usr = new Maquina();
                        usr.setNomEstrategia(st2);
                        JugadorRemigio j1 = new JugadorRemigio(usr, ier);
                        partida.AddJugador(j1, 6);
                    }
                    catch (Exception e2){
                    }
                    Contador++;
                }
            }
        }
        if(Contador > NUsers) {
            empezar();
        }
    }

    public void empezar(){
        ReglasGui.setVisible(false);
        LoadingGui.setVisible(false);
        EsperaGui.setVisible(true);
        super.getRootPane().setContentPane(EsperaGui);
        partida.EmpezarPartida();
    }
    
    public void showganador(String ganador){
        EsperaGui.setVisible(false);
        GanadorGui.setVisible(true);
        this.getRootPane().setContentPane(GanadorGui);
        NombreGanador.setText(ganador);
    }

    /**
     * Avisa cuando un jugador ha hecho una accion
     * @return true si ha realizado alguna accion
     */
    
    public boolean ha_jugado(){
        if (j.getdecision()){
            j.setdecision(false);
            return true;
        }
        else{
            return false;
        }
    }

    /**
     * Devuelve la jugada que ha realizado el jugador
     * @return la jugada del jugador
     */
    public Jugada getJugada(){
        Jugada jug = j.jug;
        //cierra la ventana en caso de que termine su turno
        if (haterminado){
            j.dispose();
        }
        return jug;
    }

    /**
     * Le da al jugador la opción de escojer de donde coger su carta(baraja o descarte)
     * @param mano es la mano actual del jugador
     * @param descarte la carta que hay en el descarte
     * @param jugador es el jugador actual
     */
    
    public void elegir(Mazo mano, Carta descarte, int jugador) {
        //throw new UnsupportedOperationException("Not yet implemented");
        //Inicializamos todos los campos de la pantalla del jugador y la lanzamos
         haterminado = false;
         j = new GUIJugador();
         j.setjugador(partida.VerJugador(jugador));
         j.setpartida(partida);
         j.setVisible(true);
         j.set_visibilidad(true);
         j.actualiza_puntuaciones(partida);
         j.set_descarte(descarte);
         j.actualiza_cartas(mano, true);
         j.setnombre(partida.VerJugador(partida.getJugadorActual()).GetUser().getLogin());
         j.setpadre(this);
    }
         /*
         haterminado = false;
         j = new GUIJugador();
         j.setVisible(true);
         j.NDescartar.setEnabled(false);
         j.Descartar.setEnabled(false);
         j.Cerrar.setEnabled(false);
         j.Baraja.setEnabled(true);
         j.Descarte.setEnabled(true);
         j.actualiza_puntuaciones(partida);
         String directori = "cartas/";
         j.actualiza_cartas(mano, true);
         //Ponemos la carta del descarte
         String cart = descarte.getValor() + j.nombrecarta(descarte.getPalo());
         ImageIcon c = new ImageIcon (getClass().getResource(directori + cart));
         j.Descarte.setIcon(c);
    }*/

    public void juega(Mazo mano, int jugador) {
        //throw new UnsupportedOperationException("Not yet implemented");
        j.set_visibilidad(false);
        j.actualiza_cartas(mano, false);
        haterminado = true;
    }
/*
         j.NDescartar.setEnabled(true);
         j.Descartar.setEnabled(true);
         j.Cerrar.setEnabled(true);
         j.Baraja.setEnabled(false);
         j.Descarte.setEnabled(false);
         j.actualiza_cartas(mano, false);
         haterminado = true;
    }*/

    public void particion(Mazo mano, int jugador) {
        haterminado = true;
         j = new GUIJugador();
         j.setjugador(partida.VerJugador(jugador));
         j.setpartida(partida);
         j.setVisible(true);
         j.set_visibilidad(true);
         j.actualiza_puntuaciones(partida);
         j.actualiza_cartas(mano, true);
         j.setnombre(partida.VerJugador(partida.getJugadorActual()).GetUser().getLogin());
         j.setpadre(this);
         j.mostrarparticion();
    }

    /**
     * abandona la partida acual y vamos al menu principal
     */
    public void abortar(){
        EsperaGui.setVisible(false);
        IntroGui.setVisible(true);
        super.getRootPane().setContentPane(IntroGui);
        j.dispose();
    }

    /**
     * Guardamos la partida actual
     * @param nom nombre de la partida
     */
    public void guardar(String nom){
        ctrlpart.GuardarPartida(nom);
        j.dispose();
        EsperaGui.setVisible(false);
        IntroGui.setVisible(true);
        super.getRootPane().setContentPane(IntroGui);
    }

    @Override
    protected void cargaraceptarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        if (partidaacargar.getSelectedItem() == null) {
            //CtrlPartidaRemigio.CargarPartida((String)partidaacargar.getSelectedItem());
        }
        else {
            try{
                ctrlpart.CargarPartida((String)partidaacargar.getSelectedItem());
                partida = ctrlpart.GetPartidaRemigio();
                CargarPartidaGui.setVisible(false);
                EsperaGui.setVisible(true);
                super.getRootPane().setContentPane(EsperaGui);
                partida.jugar(0);
            }
            catch (Exception e){
                CargarPartidaGui.setVisible(false);
                IntroGui.setVisible(true);
                getRootPane().setContentPane(IntroGui);
            }
        }
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new GUIRemigio().setVisible(true);
                nextpane = IntroGui;
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    protected javax.swing.JButton AceptarReglas;
    protected javax.swing.JPanel EsperaGui;
    protected javax.swing.JPanel GanadorGui;
    protected javax.swing.JPanel LoadingGui;
    protected javax.swing.JLabel NombreGanador;
    protected javax.swing.JButton Pulsa;
    protected javax.swing.JCheckBox RComodin;
    protected javax.swing.JCheckBox REliminacion;
    protected javax.swing.JTextField RNJuegos;
    protected javax.swing.JTextField RNPuntos;
    protected javax.swing.JCheckBox RParejas;
    protected javax.swing.JTextField RTiempoJuego;
    protected javax.swing.JTextField RTiempoTurno;
    protected javax.swing.JCheckBox RTipo;
    protected javax.swing.JPanel ReglasGui;
    protected javax.swing.JLabel err1;
    protected javax.swing.JLabel err2;
    protected javax.swing.JLabel err3;
    protected javax.swing.JLabel err4;
    protected javax.swing.JButton fin;
    protected javax.swing.JLabel jLabel1;
    protected javax.swing.JLabel jLabel10;
    protected javax.swing.JLabel jLabel11;
    protected javax.swing.JLabel jLabel2;
    protected javax.swing.JLabel jLabel3;
    protected javax.swing.JLabel jLabel4;
    protected javax.swing.JLabel jLabel5;
    protected javax.swing.JLabel jLabel6;
    protected javax.swing.JLabel jLabel7;
    protected javax.swing.JLabel jLabel8;
    protected javax.swing.JLabel jLabel9;
    protected javax.swing.JProgressBar jProgressBar1;
    protected javax.swing.JLabel text;
    // End of variables declaration//GEN-END:variables

}